import time
from multiprocessing import Process
import os, time

"""
函数式编写子进程
"""


def do():
    print(f"子进程执行，我的pid是{os.getpid()}，我的父进程的pid是{os.getppid()}")
    time.sleep(5)


"""
对象式编写子进程
"""


class SubProcess(Process):
    def __init__(self, name):
        super().__init__()
        self.name = name

    def run(self):
        print(f"子进程执行，我的pid是{os.getpid()}，我的父进程的pid是{os.getppid()}")
        time.sleep(5)


if __name__ == '__main__':
    plist = []
    print("主进程main执行")

    """
    for i in range(5):
        p = Process(target=do)  # 函数名不能加括号，否则会直接调用
        p.start()
        plist.append(p)
    for i in plist:
        p.join()  # 阻塞主进程执行，所有子进程执行完毕后，主进程才会停止
    """

    for i in range(5):
        p = SubProcess(f"p{i+1}")  # 函数名不能加括号，否则会直接调用
        p.start()
        plist.append(p)
    for i in plist:
        p.join()  # 阻塞主进程执行，所有子进程执行完毕后，主进程才会停止
    print("主进程结束")
